package online.abor;

import java.util.*;

/**
 * 有1、2、3、4个数字，能组成多少个互不相同且无重复数字的三位数？都是多少？
 * 程序分析：可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
 */
public class Topic11_ArrangeNumber {
    public static Set<Integer> nonRedundantNumSet(int n, Integer... baseNums) {
        if (baseNums == null) {
            return null;
        }
        if (baseNums.length == 1) {
            HashSet<Integer> set = new HashSet<>();
            set.add(baseNums[0]);
            return set;
        }
        //TreeSet是排序的set
        Set<Integer> baseNumSet = new TreeSet<>(Arrays.asList(baseNums));
        Set<Integer> retSet = new TreeSet<>();
        TreeMap<Integer, ArrayList<Integer[]>> map = new TreeMap<>();

        for (Integer num : baseNumSet) {
            map.put(num, new ArrayList<>());
        }
        for (Integer num : baseNumSet) {
            map.get(num).add(new Integer[n]);
            for (int i = 0; i < n; i++) {
                //if (i == 0 && num == 0) {
                //    continue;
                //}
            }
        }
        return retSet;
    }
    public static Set<Integer> nonRedundantNumSet_2(Integer... baseNums){
        Set<Integer> baseNumSet = new TreeSet<>(Arrays.asList(baseNums));
        Set<Integer> retSet = new TreeSet<>();
        for (Integer bai : baseNumSet) {
            if (bai==0){
                continue;
            }
            for (Integer shi : baseNumSet) {
                if (shi.equals(bai)){
                    continue;
                }
                for (Integer ge : baseNumSet) {
                    if(ge.equals(bai) || ge.equals(shi)){
                        continue;
                    }
                    retSet.add(Integer.valueOf(""+bai+shi+ge));
                }
            }
        }
        return retSet;
    }
}
